From: Peter Johnson Date: Fri, 6 Jul 2001 04:42:59 +0000 (-0000) Subject: Fix and tighten down on validation regexps. Add support for 4th group X-Git-Tag: v0.1.0~395 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd6d5322e1bb886b4f30ef9523e271862c679e5c;p=yasm Fix and tighten down on validation regexps. Add support for 4th group parameter. svn path=/trunk/yasm/; revision=116 --- diff --git a/modules/parsers/nasm/gen_instr.pl b/modules/parsers/nasm/gen_instr.pl index 3ec75f9f..fc94233c 100755 --- a/modules/parsers/nasm/gen_instr.pl +++ b/modules/parsers/nasm/gen_instr.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# $Id: gen_instr.pl,v 1.15 2001/07/05 09:30:04 peter Exp $ +# $Id: gen_instr.pl,v 1.16 2001/07/06 04:42:59 peter Exp $ # Generates bison.y and token.l from instrs.dat for YASM # # Copyright (C) 2001 Michael Urman @@ -84,7 +84,7 @@ my $valid_regs = join '|', qw( ); my $valid_opcodes = join '|', qw( [0-9A-F]{2} - \\$0\\.0 \\$0\\.1 \\$0\\.2 + \\$0\\.\\d ); my $valid_cpus = join '|', qw( 8086 186 286 386 486 P4 P5 P6 @@ -159,21 +159,22 @@ sub read_instructions ($) $args =~ s/\$0\.1/\$0\.0/g; $args =~ s/\$0\.2/\$0\.1/g; $args =~ s/\$0\.3/\$0\.2/g; + $args =~ s/\$0\.4/\$0\.3/g; my ($op, $size, $opcode, $eff, $imm, $cpu) = split /\t+/, $args; eval { die "Invalid group name\n" if $inst !~ m/^!\w+$/o; die "Invalid Operands\n" - if $op !~ m/^(?:TO\s)?nil|(?:$valid_regs)(?:,(?:$valid_regs)){0,2}$/oi; + if $op !~ m/^(nil|(TO\s)?(?:$valid_regs)(,(?:$valid_regs)){0,2})$/oi; die "Invalid Operation Size\n" - if $size !~ m/^nil|16|32|\$0\.\d$/oi; + if $size !~ m/^(nil|16|32|\$0\.\d)$/oi; die "Invalid Opcode\n" - if $opcode !~ m/(?:$valid_opcodes)(?:,$valid_opcodes)?(\+\$\d)?/oi; + if $opcode !~ m/^(?:$valid_opcodes)(,(?:$valid_opcodes)){0,2}(\+(\$\d|\$0\.\d|\d))?$/oi; die "Invalid Effective Address\n" - if $eff !~ m/nil|(\$?\d[ir]?(,\$?\d|,\$0.\d))/oi; + if $eff !~ m/^(nil|\$?\d(r?,(\$?\d|\$0.\d)(\+\d)?|i,(nil|16|32)))$/oi; die "Invalid Immediate Operand\n" - if $imm !~ m/nil|((\$\d[r]?|8|16|32|[0-9A-F]{2}|\$0\.\d)(,\$\d|(8|16|32[s]?))?)/oi; + if $imm !~ m/^(nil|((\$\d|[0-9A-F]{2}|\$0\.\d),(((8|16|32)s?))?))$/oi; die "Invalid CPU\n" if $cpu !~ m/^(?:$valid_cpus)(?:,(?:$valid_cpus))*$/o; }; diff --git a/src/gen_instr.pl b/src/gen_instr.pl index 3ec75f9f..fc94233c 100755 --- a/src/gen_instr.pl +++ b/src/gen_instr.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# $Id: gen_instr.pl,v 1.15 2001/07/05 09:30:04 peter Exp $ +# $Id: gen_instr.pl,v 1.16 2001/07/06 04:42:59 peter Exp $ # Generates bison.y and token.l from instrs.dat for YASM # # Copyright (C) 2001 Michael Urman @@ -84,7 +84,7 @@ my $valid_regs = join '|', qw( ); my $valid_opcodes = join '|', qw( [0-9A-F]{2} - \\$0\\.0 \\$0\\.1 \\$0\\.2 + \\$0\\.\\d ); my $valid_cpus = join '|', qw( 8086 186 286 386 486 P4 P5 P6 @@ -159,21 +159,22 @@ sub read_instructions ($) $args =~ s/\$0\.1/\$0\.0/g; $args =~ s/\$0\.2/\$0\.1/g; $args =~ s/\$0\.3/\$0\.2/g; + $args =~ s/\$0\.4/\$0\.3/g; my ($op, $size, $opcode, $eff, $imm, $cpu) = split /\t+/, $args; eval { die "Invalid group name\n" if $inst !~ m/^!\w+$/o; die "Invalid Operands\n" - if $op !~ m/^(?:TO\s)?nil|(?:$valid_regs)(?:,(?:$valid_regs)){0,2}$/oi; + if $op !~ m/^(nil|(TO\s)?(?:$valid_regs)(,(?:$valid_regs)){0,2})$/oi; die "Invalid Operation Size\n" - if $size !~ m/^nil|16|32|\$0\.\d$/oi; + if $size !~ m/^(nil|16|32|\$0\.\d)$/oi; die "Invalid Opcode\n" - if $opcode !~ m/(?:$valid_opcodes)(?:,$valid_opcodes)?(\+\$\d)?/oi; + if $opcode !~ m/^(?:$valid_opcodes)(,(?:$valid_opcodes)){0,2}(\+(\$\d|\$0\.\d|\d))?$/oi; die "Invalid Effective Address\n" - if $eff !~ m/nil|(\$?\d[ir]?(,\$?\d|,\$0.\d))/oi; + if $eff !~ m/^(nil|\$?\d(r?,(\$?\d|\$0.\d)(\+\d)?|i,(nil|16|32)))$/oi; die "Invalid Immediate Operand\n" - if $imm !~ m/nil|((\$\d[r]?|8|16|32|[0-9A-F]{2}|\$0\.\d)(,\$\d|(8|16|32[s]?))?)/oi; + if $imm !~ m/^(nil|((\$\d|[0-9A-F]{2}|\$0\.\d),(((8|16|32)s?))?))$/oi; die "Invalid CPU\n" if $cpu !~ m/^(?:$valid_cpus)(?:,(?:$valid_cpus))*$/o; }; diff --git a/src/parsers/nasm/gen_instr.pl b/src/parsers/nasm/gen_instr.pl index 3ec75f9f..fc94233c 100755 --- a/src/parsers/nasm/gen_instr.pl +++ b/src/parsers/nasm/gen_instr.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# $Id: gen_instr.pl,v 1.15 2001/07/05 09:30:04 peter Exp $ +# $Id: gen_instr.pl,v 1.16 2001/07/06 04:42:59 peter Exp $ # Generates bison.y and token.l from instrs.dat for YASM # # Copyright (C) 2001 Michael Urman @@ -84,7 +84,7 @@ my $valid_regs = join '|', qw( ); my $valid_opcodes = join '|', qw( [0-9A-F]{2} - \\$0\\.0 \\$0\\.1 \\$0\\.2 + \\$0\\.\\d ); my $valid_cpus = join '|', qw( 8086 186 286 386 486 P4 P5 P6 @@ -159,21 +159,22 @@ sub read_instructions ($) $args =~ s/\$0\.1/\$0\.0/g; $args =~ s/\$0\.2/\$0\.1/g; $args =~ s/\$0\.3/\$0\.2/g; + $args =~ s/\$0\.4/\$0\.3/g; my ($op, $size, $opcode, $eff, $imm, $cpu) = split /\t+/, $args; eval { die "Invalid group name\n" if $inst !~ m/^!\w+$/o; die "Invalid Operands\n" - if $op !~ m/^(?:TO\s)?nil|(?:$valid_regs)(?:,(?:$valid_regs)){0,2}$/oi; + if $op !~ m/^(nil|(TO\s)?(?:$valid_regs)(,(?:$valid_regs)){0,2})$/oi; die "Invalid Operation Size\n" - if $size !~ m/^nil|16|32|\$0\.\d$/oi; + if $size !~ m/^(nil|16|32|\$0\.\d)$/oi; die "Invalid Opcode\n" - if $opcode !~ m/(?:$valid_opcodes)(?:,$valid_opcodes)?(\+\$\d)?/oi; + if $opcode !~ m/^(?:$valid_opcodes)(,(?:$valid_opcodes)){0,2}(\+(\$\d|\$0\.\d|\d))?$/oi; die "Invalid Effective Address\n" - if $eff !~ m/nil|(\$?\d[ir]?(,\$?\d|,\$0.\d))/oi; + if $eff !~ m/^(nil|\$?\d(r?,(\$?\d|\$0.\d)(\+\d)?|i,(nil|16|32)))$/oi; die "Invalid Immediate Operand\n" - if $imm !~ m/nil|((\$\d[r]?|8|16|32|[0-9A-F]{2}|\$0\.\d)(,\$\d|(8|16|32[s]?))?)/oi; + if $imm !~ m/^(nil|((\$\d|[0-9A-F]{2}|\$0\.\d),(((8|16|32)s?))?))$/oi; die "Invalid CPU\n" if $cpu !~ m/^(?:$valid_cpus)(?:,(?:$valid_cpus))*$/o; };